/**
 * Nuxt 配置
 * @see https://nuxt.com/docs/api/configuration/nuxt-config 官方文档
 * @see https://nuxt.com.cn/docs/4.x/api/nuxt-config 中文文档
 */
export default defineNuxtConfig({
  compatibilityDate: '2025-07-15',
  devtools: { enabled: true },
  ssr: true,
  devServer: {
    port: 8066
  },
  app: {
    baseURL: '/nuxt/', // 应用程序基础路径
    head: {
      title: '我的 Nuxt 4 应用',
      meta: [{ name: 'description', content: '这是一个基于 Nuxt 4 的应用。' }]
    }
  },
  css: [
    '~/assets/styles/main.scss', // 全局样式
    'element-plus/theme-chalk/dark/css-vars.css' // element-plus 深色模式样式
  ],
  components: [
    {
      path: '~/components', // components 目录下组件自动导入
      pathPrefix: false // 只根据组件的名称而不是路径自动导入组件
    }
  ],
  imports: {
    dirs: []
  },
  /**
   * 运行时配置-环境变量
   * @description 生产环境无法加载 .env 文件，因此弃用 .env 方式，直接使用环境 runtimeConfig 配置
   * @see https://nuxt.com/docs/4.x/getting-started/configuration#environment-overrides
   * @see https://nuxt.com/docs/4.x/guide/going-further/runtime-config
   */
  $development: {
    runtimeConfig: {
      apiSecret: 'dev_123',
      public: {
        apiBase: 'https://api.dev.example.com'
      }
    }
  },
  $production: {
    runtimeConfig: {
      apiSecret: 'prod_123',
      public: {
        apiBase: 'https://api.prod.example.com'
      }
    }
  },
  /**
   * 模块
   * @see https://nuxt.com/modules
   */
  modules: [
    '@pinia/nuxt', // pinia
    'pinia-plugin-persistedstate/nuxt', // pinia 持久化存储
    '@element-plus/nuxt', // element-plus
    '@nuxtjs/tailwindcss', // tailwindcss
    '@nuxtjs/color-mode', // color-mode
    '@vueuse/nuxt', // vueuse
    'dayjs-nuxt' // dayjs
  ],
  /**
   * pinia-plugin-persistedstate/nuxt
   * @see https://prazdevs.github.io/pinia-plugin-persistedstate/frameworks/nuxt.html
   */
  piniaPluginPersistedstate: {
    key: 'pinia_%id', // 存储键值，如：prefix_%id_postfix，%id会自动替换为仓库名称
    storage: 'cookies', // cookies | localStorage | sessionStorage (只有 cookie 时可以服务端和客户端都能获取到)
    cookieOptions: {
      sameSite: 'lax',
      maxAge: 365 * 24 * 60 * 60 // 过期时间(秒)
    },
    debug: false
  },
  /**
   * @element-plus/nuxt
   * @see https://nuxt.com.cn/modules/element-plus
   */
  elementPlus: {
    defaultLocale: 'zh-cn', // 设置默认语言为中文
    globalConfig: {
      size: 'default'
    }
  },
  /**
   * @nuxtjs/color-mode
   * @see https://color-mode.nuxtjs.org 需VPN
   */
  colorMode: {
    preference: 'system', // 默认主题模式
    fallback: 'light', // 备用主题模式（默认主题模式无效情况下使用）
    hid: 'nuxt-color-mode-script',
    globalName: '__NUXT_COLOR_MODE__',
    componentName: 'ColorScheme',
    classPrefix: '',
    classSuffix: '',
    storage: 'cookie', // localStorage | sessionStorage | cookie
    storageKey: 'nuxt-color-mode' // 存储的 key
  }
})
